NULL
开始照旧拿nmap扫一下,开了21,22,80。其中21是ftp,匿名登录进去之后只有一个flag,也没有其他的。22端口是ssh,现在也登录不进去。那就只能去80开的网页看看了
首先进去是个网页
在里面到处找一下,有一个admin.php的后台登陆,但登录不进去,后面找到一个sql注入,手工测试了一下,数字型的bool盲注,由于这台机子还带waf,访问速度受限。
拿sqlmap跑一下,跑出来sixes表,里面有第二个flag,和一个叫webmaster的用户和md5的c78180d394684c07d6d87b291d8fe533解不出来….
那就只能继续在网页里找其他突破点。在contact.php
之后在里面找到一个看起来像ssrf的,给了提示说是输入url。
在本地开个nc监听,刚开始看着也没什么,抓狂了很久,发现只能输入url,又找了很久的洞,发现他是设置了phpsession,而他发回来的包里也有phpsession,尝试替换了一下,发现是管理员的phpsession,成功进入了后台
有个文件上传,有校验,测试了一下,是只验证文件头尾,是对应的文件头,不验证文件结尾。在图片后添加php代码,即可上传。但它没有回显上传位置。根据之前网页里的图片推测,发现是在/img目录下。
蚁剑弹个shell
通过php的shell进去之后,是正常的www-data的权限,uname看了一下是linux4.15,内核提权无望。那就只能试试拿里面唯一一个用户webmaster的文件来提权。
用了目录权限检索工具查找,自己有权限运行的所有webmaster的文件,找了很久,看到一个notemaker。自己菜只会web,不会pwn……
拜托了队内的pwn师傅,师傅看了一眼说能通,打通了,给了exp。之后被师傅疯狂嘲讽,shell太垃圾……重新用python弹shell回来
pwn通之后,成为了webmaster的shell,用列举文件权限,sudo -l,给了sudo service的权限,也没啥其他的,那就只能开始死亡shell脚本审计。
1 |
|
上面是Ubuntu上的service的源码,跟这个靶机里是基本相同的。
这个原理是linux有这个设置,当运行如下指令的时候1
cd /etc/inid.t/../../bin
实际上就是1
cd /bin
那么,这个service的功能就是,调用系统的env指令,来执行/etc/init.d/里的服务启动脚本。至于,具体这个service功能,会有另外一篇文章具体讲解。
由于在这个靶机,webmaster用户给了sudo运行service的权限,于是可以构造一下exp1
sudo service ../../bin/bash
来弹出root的shell,最终getroot